import addDialogHtml from 'ngtemplate!html!../../../tpls/entry/add.dialog.tpl.html';
import editDialogHtml from 'ngtemplate!html!../../../tpls/entry/edit.dialog.tpl.html';

class EntryDataSettingController {
    constructor($rootScope, $scope, $cookieStore, $timeout, $state, EntryService, ngDialog, dialogService, iRunner){

    	var vm = this;

    	vm.$rootScope    = $rootScope;
    	vm.$cookieStore  = $cookieStore;
    	vm.$timeout 	 = $timeout;
    	vm.$state   	 = $state;
    	vm.ngDialog 	 = ngDialog;
    	vm.dialogService = dialogService;
    	vm.iRunner 	     = iRunner;
        vm.EntryService = EntryService;


        vm.EntryService.getRegisterFieldLists(vm.$cookieStore.get('access_token'), vm.$state.params.race_id)
        .then(function(data) {
            // 成功调用
            if (data.code==0) {

                vm.entryDataList = data.data;
                angular.forEach(vm.entryDataList, function(data,index,array){
                    // 顺序
                    data.seq = index;
                    // 显示选项
                    data.optionalflag = data.display;
                });

                console.log(data.data);

            } else{
                console.log("调用失败");
            }
            // 登录信息已过期, 请重新登录
            data.code==-1001&&vm.dialogService.error(data.message, true);
        }, function(data) {
            console.log('error')
        });

        /**
         * [delItem 删除自定义字段]
         * @param  {[type]} id [description]
         * @return {[type]}    [description]
         */
        vm.delItem = function(id) {

            var params = {
                id: id
            }

            vm.EntryService.postRegisterfieldDel(params, vm.$cookieStore.get('access_token'), vm.$state.params.race_id)
            .then(function(data) {
                // 成功调用
                if (data.code==0) {
                    vm.dialogService.successUnload("删除成功");
                    vm.$timeout( () => {
                        window.location.reload(); 
                    }, 1500)
                }
                // 调用失败, 提示用户
                (data.code!=0&&data.code!=-1001)&&vm.dialogService.error(data.message);
                // 登录信息已过期, 请重新登录
                data.code==-1001&&vm.dialogService.error(data.message, true);
                console.log(data)
            }, function(data) {
                console.log('error')
            });
        }

        /**
         * [add 新增自定义字段]
         */
        vm.add = function() {
            vm.EntryService.getRegisterfieldAdd(vm.$cookieStore.get('access_token'), vm.$state.params.race_id)
            .then(function(data) {
                // 成功调用
                if (data.code==0) {
                    // 显示名称
                    $rootScope.name = '';
                    // 备注
                    $rootScope.remarks = '';
                    // 类型
                    $rootScope.type = '';
                    // 显示状态
                    $rootScope.display = '';
                    // 列表值
                    $rootScope.selectOptions = '';

                    //添加新自定义字段的数据库名称
                    vm.newFieldName = data.data.field;
                    vm.ngDialog.open({
                        template: addDialogHtml,
                        className: 'ngdialog-theme-default ngdialog-alert',
                        scope: $rootScope
                    });

                } else{
                    console.log("调用失败");
                }
                // 登录信息已过期, 请重新登录
                data.code==-1001&&vm.dialogService.error(data.message, true);
            }, function(data) {
                console.log('error')
            });
        }

        /**
         * [editItem 编辑自定义字段]
         */
        vm.editItem = function(id, name, remarks, type, display, selectOptions) {
            // ID
            $rootScope.id = id;
            // 显示名称
            $rootScope.name = name;
            // 备注
            $rootScope.remarks = remarks;
            // 类型
            $rootScope.type = type;
            // 显示状态
            $rootScope.display = display;
            // 列表值
            $rootScope.selectOptions = selectOptions.replace(/\`/g, "\n");

            vm.ngDialog.open({
                template: editDialogHtml,
                className: 'ngdialog-theme-default ngdialog-alert',
                scope: $rootScope
            });
        }

        /**
         * [editItemSave 编辑自定义字段]
         * @param {[type]} name          [description]
         * @param {[type]} remarks       [description]
         * @param {[type]} type          [description]
         * @param {[type]} selectOptions [description]
         * @param {[type]} display       [description]
         */
        $rootScope.editItemSave = function(id, name, remarks, type, display, selectOptions) {
            
            if (!name || !type || !display || (type=='list' && !selectOptions)) {
                vm.dialogService.error('请填写完全自定义字段信息！');
                return false;
            }

            //处理列表option项目
            selectOptions = selectOptions ? selectOptions : ''

            var params = {
                cfg: {
                    id: id,
                    field_title: name,
                    list_values: selectOptions,
                    type: type,
                    desc: remarks,
                    display: display
                }
            }

            // console.log(params);
            vm.EntryService.postRegisterfieldEdit(params, vm.$cookieStore.get('access_token'), vm.$state.params.race_id)
            .then(function(data) {
                // 成功调用
                if (data.code==0) {
                    vm.dialogService.successUnload("保存成功");
                    // vm.$state.reload();
                    vm.$timeout( () => {
                        window.location.reload(); 
                    }, 1500)
                }
                // 调用失败, 提示用户
                (data.code!=0&&data.code!=-1001)&&vm.dialogService.error(data.message);
                // 登录信息已过期, 请重新登录
                data.code==-1001&&vm.dialogService.error(data.message, true);
                console.log(data)
            }, function(data) {
                console.log('error')
            });

        }

        /**
         * [addSave 新增自定义字段保存]
         * @param {[type]} name          [名称]
         * @param {[type]} remarks       [描述]
         * @param {[type]} type          [类型]
         * @param {[type]} selectOptions [选项（列表的场合）]
         */
        $rootScope.addSave = function(name, remarks, type, selectOptions, display) {
            if (!name || !type || !display || (type=='list' && !selectOptions)) {
                vm.dialogService.error('请填写完全自定义字段信息！');
                return false;
            }

            //处理列表option项目
            selectOptions = selectOptions ? selectOptions : ''

            var params = {
                cfg: {
                    field_name: vm.newFieldName,
                    field_title: name,
                    list_values: selectOptions,
                    type: type,
                    desc: remarks,
                    display: display
                }
            }

            vm.EntryService.postRegisterfieldAdd(params, vm.$cookieStore.get('access_token'), vm.$state.params.race_id)
            .then(function(data) {
                // 成功调用
                if (data.code==0) {
                    vm.dialogService.successUnload("保存成功");
                    // vm.$state.reload();
                    vm.$timeout( () => {
                        window.location.reload(); 
                    }, 1500)
                }
                // 调用失败, 提示用户
                (data.code!=0&&data.code!=-1001)&&vm.dialogService.error(data.message);
                // 登录信息已过期, 请重新登录
                data.code==-1001&&vm.dialogService.error(data.message, true);
                console.log(data)
            }, function(data) {
                console.log('error')
            });
        }

        /**
         * 表单提交
         * @param  {Boolean} isValid [description]
         * @return {[type]}          [description]
         */
        vm.submitForm = function(isValid) {

            var sort = [];
            $(".item").each(function(){
                sort.push({
                    id: $(this).data("seq")
                })
            });
            
            console.log(JSON.stringify(sort));
            var field_name = [];
            var field_title = [];
            var type = [];
            var is_system_field = [];
            var desc = [];
            var ids = [];
            var display = [];
            var list_values = [];

            angular.forEach(this.entryDataList, function(data,index,array){
                field_name.push(data.field_name);
                field_title.push(data.field_title);
                type.push(data.type);
                is_system_field.push(data.is_system_field);
                desc.push(data.desc);
                ids.push(data.id ? data.id : 0);
                display.push(data.optionalflag);
                list_values.push(data.list_values ? data.list_values : "");
            });

            var params = {
                sort: JSON.stringify(sort),
                field_name: field_name,
                field_title: field_title,
                type: type,
                is_system_field: is_system_field,
                desc: desc,
                ids: ids,
                display: display,
                list_values: list_values
            }
            console.log(params);

            this.EntryService.postRegisterFieldUpdate(params, this.$cookieStore.get('access_token'), this.$state.params.race_id)
            .then(function(data) {
                // 成功调用
                if (data.code==0) {
                    vm.dialogService.successUnload("保存成功");
                    vm.$timeout( () => {
                        window.location.reload(); 
                    }, 1500)

                }
                // 调用失败, 提示用户
                (data.code!=0&&data.code!=-1001)&&vm.dialogService.error(data.message);
                // 登录信息已过期, 请重新登录
                data.code==-1001&&vm.dialogService.error(data.message, true);
                console.log(data)
            }, function(data) {
                console.log('error')
            });
        
        }
    }

}

EntryDataSettingController.$inject = ['$rootScope', '$scope', '$cookieStore', '$timeout', '$state', 'EntryService', 'ngDialog', 'dialogService', 'iRunner']; 

export default EntryDataSettingController;